package com.ada.spark.datasource

import org.apache.spark.SparkConf
import org.apache.spark.sql.{SaveMode, SparkSession}

/**
  * Spark SQL可以通过JDBC从关系型数据库中读取数据的方式创建DataFrame，通过对DataFrame一系列的计算后，还可以将数据再写回关系型数据库中。
  *
  * 注意：需要将相关的数据库驱动放到spark的类路径下。
  */
object JdbcTest {
    def main(args: Array[String]): Unit = {
        //创建配置对象
        val conf: SparkConf = new SparkConf().setAppName("JdbcTest").setMaster("local[*]")

        //创建SparkSql的环境对象
        val spark: SparkSession = SparkSession.builder().config(conf).getOrCreate();

        //从Mysql数据库加载数据方式一
        val jdbcDF = spark.read
            .format("jdbc")
            .option("url", "jdbc:mysql://hadoop121:3306/rdd")
            .option("dbtable", "rddtable")
            .option("user", "root")
            .option("password", "888888")
            .load()

        jdbcDF.show()

        //将数据写入Mysql方式一
        jdbcDF.write
            .mode(SaveMode.Overwrite)
            .format("jdbc")
            .option("url", "jdbc:mysql://hadoop121:3306/rdd")
            .option("dbtable", "rddtable1")
            .option("user", "root")
            .option("password", "888888")
            .save()
    }
}
